package jvlite.dao.JliteORM;

import java.lang.reflect.ParameterizedType;
import java.sql.ResultSet;
import java.util.List;

/**
 * public interface to handle result set
 */
public abstract class AbsResultSetHandler<T> implements IResultSetHandler {

//    public <T> T handler(ResultSet rs, Class<T> clz){
//        return null;
//    }
//
//    public <T> List<T> handlerList(ResultSet rs, Class<T> clz){
//        return null;
//    }

    /**
     * 如果子类没有实例化T,则无法获取T的实际类型;
     * @param <T>
     * @return
     */
    @SuppressWarnings("unchecked")
    public <T> Class<T> getTtClass() {
        return (Class<T>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];
    }

}